#ifndef MEDIA_BASE_VOICEPROCESSOR_H_
#define MEDIA_BASE_VOICEPROCESSOR_H_

#include "base/basictypes.h"
#include "base/sigslot.h"
#include "media/audioframe.h"

namespace cricket {

	enum MediaProcessorDirection {
		MPD_INVALID = 0,
		MPD_RX = 1 << 0,
		MPD_TX = 1 << 1,
		MPD_RX_AND_TX = MPD_RX | MPD_TX,
	};

	class VoiceProcessor : public sigslot::has_slots<> {
	public:
		virtual ~VoiceProcessor() {}
		// Contents of frame may be manipulated by the processor.
		// The processed data is expected to be the same size as the
		// original data.
		virtual void OnFrame(uint32 ssrc,
			MediaProcessorDirection direction,
			AudioFrame* frame) = 0;
	};

}  // namespace cricket
#endif  // MEDIA_BASE_VOICEPROCESSOR_H_
